package common

// 操作类型
type OpCode int

const (
	OpHeartbeat    OpCode = 1 // 心跳、链路维持报
	OpAutoUpSingle        = 2 // 自动上报单包
	OpAutoUpMulti         = 3 // 自动上报多包
	OpCallUp              = 4 // 召测反馈报
	OpUnknown             = 0 // 无效类型
)

// 数据流向
type OpDirection int

const (
	OpDirectionUp      OpDirection = 1
	OpDirectionDown    OpDirection = 2
	OpDirectionUnknown OpDirection = 0
)

type MsgBuffer interface {

	// VirtualLength 虚拟长度，虚读后剩余可读数据长度
	VirtualLength() int

	// 虚读，不移动 read 指针，需要配合 VirtualFlush 和 VirtualRevert 使用
	VirtualRead(p []byte) (n int, err error)

	// 还原虚读指针
	VirtualFlush()

	// VirtualRevert 还原虚读指针
	VirtualRevert()
}
